home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / MISC / HCAL-27 / EQUIV.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1996-04-23  |  5.7 KB  |  228 lines

  1. 10  'EQUIV - 09 SEP 92 rev. 24 APR 96
  2. 20  IF EX$=""THEN EX$="EXIT"
  3. 30  IF PROG$=""THEN PROG$=EX$
  4. 40  COMMON EX$,PROG$
  5. 50  CLS:KEY OFF
  6. 60  COLOR 7,0,1
  7. 70  DIM X(20)
  8. 80  DIM U$(20)
  9. 90  UL$=STRING$(80,205)
  10. 100  ER$=STRING$(80,32)
  11. 110  L$=STRING$(80,223)
  12. 120  PI=3.14159
  13. 130  '
  14. 140  '.....start
  15. 150  CLS
  16. 160  COLOR 15,2
  17. 170  PRINT " EQUIVALENTS";TAB(57);"by George Murphy VE3ERP ";
  18. 180  COLOR 1,0:PRINT STRING$(80,223);
  19. 190  COLOR 7,0
  20. 200  PRINT " Press number in < > to determine equivalent values of:"
  21. 210  PRINT UL$;
  22. 220  PRINT "  < 1 >  Capacitance"
  23. 230  PRINT "  < 2 >  Current"
  24. 240  PRINT "  < 3 >  Degrees / Radians"
  25. 250  PRINT "  < 4 >  Degrees / Minutes / Seconds"
  26. 260  PRINT "  < 5 >  Frequencies/Wavelengths"
  27. 270  PRINT "  < 6 >  Length / Distance"
  28. 280  PRINT "  < 7 >  Resistance"
  29. 290  PRINT "  < 8 >  Temperature"
  30. 300  PRINT "  < 9 >  Time"
  31. 310  PRINT UL$;
  32. 320  PRINT "  < 0 >  EXIT program
  33. 330  Y$=INKEY$:IF Y$=""THEN 330
  34. 340  IF Y$="0"THEN CLS:CHAIN PROG$
  35. 350  IF Y$="1"THEN 850
  36. 360  IF Y$="2"THEN 940
  37. 370  IF Y$="3"THEN 1950
  38. 380  IF Y$="4"THEN 1360
  39. 390  IF Y$="5"THEN 1030
  40. 400  IF Y$="6"THEN 1140
  41. 410  IF Y$="7"THEN 1270
  42. 420  IF Y$="8"THEN 2100
  43. 430  IF Y$="9"THEN 1830
  44. 440  GOTO 330
  45. 450  '
  46. 460  '.....screen display
  47. 470  CLS
  48. 480  COLOR 1,1:PRINT ER$;:LOCATE CSRLIN-1
  49. 490  COLOR 15,1:PRINT " EQUIVALENT ";T$;" "
  50. 500  COLOR 1,0:PRINT L$;
  51. 510  COLOR 7,0
  52. 520  PRINT " Press number in < > to select base unit:
  53. 530  PRINT UL$;
  54. 540  FOR Z=1 TO N
  55. 550  PRINT "  (";Z;")  ";U$(Z)
  56. 560  NEXT Z
  57. 570  Z$=INKEY$:IF U$(VAL(Z$))=""THEN 570 ELSE 590
  58. 580  GOTO 570
  59. 590  LOCATE 3:PRINT ER$;:LOCATE 3
  60. 600  IF Y$="4"THEN 1430
  61. 610  PRINT " ENTER: How many ";U$(VAL(Z$));:INPUT Q#
  62. 620  LOCATE CSRLIN-1:PRINT ER$;:LOCATE CSRLIN-1
  63. 630  PRINT USING "########,###.###";Q#;:PRINT " ";U$(VAL(Z$))+" ="
  64. 640  IF Y$="8"THEN 2180
  65. 650  Y#=Q#/X(VAL(Z$))
  66. 660  IF Y$="7"THEN 2020
  67. 670  IF X(VAL(Z$))=999 THEN Y#=3E+08/Q#      'frequency/wavelength only
  68. 680  FOR Z=1 TO N:J#=Y#*X(Z)
  69. 690  IF X(Z)=999 THEN J#=300000/(Y#/1000)  'frequency/wavelength ony
  70. 700  K#=INT(J#*10^2+0.5)/10^2:U$="##,###.##":TOL$=".01"
  71. 710  IF Y$="3"OR Y$="4"THEN K#=INT(J#*10^3+0.5)/10^3:U$="##,###.###":TOL$=".001"
  72. 720  IF Y$="1"THEN K#=INT(J#*10^4+0.5)/10^4:U$="##,###.####":TOL$=".0001"
  73. 730  LOCATE 4+Z,34:PRINT " = ";
  74. 740  IF K#<VAL(TOL$) THEN PRINT "     -       less than ";TOL$:GOTO 770
  75. 750  IF K#>=10^5 THEN PRINT "     -       more than 99,999.999":GOTO 770
  76. 760  PRINT USING U$;K#
  77. 770  NEXT Z
  78. 780  PRINT UL$;
  79. 790  PRINT TAB(14);"Values shown are rounded off to the nearest ";TOL$
  80. 800  PRINT
  81. 810  PRINT TAB(22);"Press any key to continue............"
  82. 820  IF INKEY$=""THEN 820
  83. 830  GOTO 140     'start
  84. 840  '
  85. 850  '.....Capacitance
  86. 860  CLS
  87. 870  T$="CAPACITANCES"
  88. 880  U$(1)="Farads..............(F)":X(1)=1
  89. 890  U$(2)="Microfarads........(>F)":X(2)=10^6
  90. 900  U$(3)="Picofarads.........(pF)":X(3)=10^12
  91. 910  N=3
  92. 920  GOTO 460
  93. 930  '
  94. 940  '.....Current
  95. 950  CLS
  96. 960  T$="CURRENTS"
  97. 970  U$(1)="Amperes.............(A)":X(1)=1
  98. 980  U$(2)="Milliamperes.......(mA)":X(2)=10^3
  99. 990  U$(3)="Microamperes.......(>A)":X(3)=10^6
  100. 1000  N=3
  101. 1010  GOTO 460
  102. 1020  '
  103. 1030  '.....Frequency
  104. 1040  CLS
  105. 1050  T$="FREQUENCIES/WAVELENGTHS"
  106. 1060  U$(1)="Herz...............(Hz)":X(1)=1
  107. 1070  U$(2)="Kiloherz..........(kHz)":X(2)=10^-3
  108. 1080  U$(3)="Megaherz..........(MHz)":X(3)=10^-6
  109. 1090  U$(4)="Gigaherz..........(GHz)":X(4)=10^-9
  110. 1100  U$(5)="Wavelength (metres)....":X(5)=999
  111. 1110  N=5
  112. 1120  GOTO 460
  113. 1130  '
  114. 1140  '.....Lengths/Distances
  115. 1150  CLS
  116. 1160  T$="LENGTHS/DISTANCES
  117. 1170  U$(1)="Millimetres........(mm)":X(1)=10^3
  118. 1180  U$(2)="Centimeters........(cm)":X(2)=10^2
  119. 1190  U$(3)="Metres..............(m)":X(3)=1
  120. 1200  U$(4)="Kilometres.........(km)":X(4)=0.000999999
  121. 1210  U$(5)="Inches.............(in)":X(5)=39.37
  122. 1220  U$(6)="Feet...............(ft)":X(6)=39.37/12
  123. 1230  U$(7)="Miles..............(mi)":X(7)=39.37/12/5280
  124. 1240  N=7
  125. 1250  GOSUB 460
  126. 1260  '
  127. 1270  '.....Resistance
  128. 1280  CLS
  129. 1290  T$="RESISTANCES"
  130. 1300  U$(1)="Ohms................(-)":X(1)=1
  131. 1310  U$(2)="Kilohm.............(k-)":X(2)=10^-3
  132. 1320  U$(3)="Megohm.............(M-)":X(3)=10^-6
  133. 1330  N=3
  134. 1340  GOTO 460
  135. 1350  '
  136. 1360  '.....Degrees/Minutes/Seconds
  137. 1370  CLS
  138. 1380  T$="DEGREES/MINUTES/SECONDS"
  139. 1390  U$(1)="Decimal degrees"
  140. 1400  U$(2)="Degrees/Minutes/Seconds"
  141. 1410  N=2
  142. 1420  GOTO 460
  143. 1430  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 13
  144. 1440  T=7
  145. 1450  PRINT TAB(T);
  146. 1460  PRINT "Calculated values are to the nearest .001 degree and nearest second"
  147. 1470  PRINT TAB(T);
  148. 1480  PRINT "of angle. 0.001<UNK! {00F8}> of latitude = approximately 100m.(350 ft.) and one"
  149. 1490  PRINT TAB(T);
  150. 1500  PRINT "second (1";CHR$(34);") of angle = approx. 30m.(100ft.).
  151. 1510  LOCATE 3
  152. 1520  IF Z$="2"THEN 1670
  153. 1530  INPUT " ENTER: Decimal degrees ";D
  154. 1540  LOCATE CSRLIN-1:PRINT ER$;:LOCATE 4
  155. 1550  D1=INT(D)           'degrees
  156. 1560  D2=(D-D1)*60        'minutes
  157. 1570  D3=(D2-INT(D2))*60  'seconds
  158. 1580  D2=INT(D2)
  159. 1590  D3=INT(D3+0.5)
  160. 1600  IF D3=60 THEN D2=D2+1:D3=0
  161. 1610  IF D2=60 THEN D1=D1+1:D2=0
  162. 1620  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 3
  163. 1630  PRINT D;"<UNK! {00F8}> =";STR$(D1);"<UNK! {00F8}>";STR$(D2);"'";STR$(D3);CHR$(34)
  164. 1640  TOL$="second of angle"
  165. 1650  GOTO 1800
  166. 1660  '
  167. 1670  PRINT " Enter Degrees, Minutes and Seconds as three separate entities:"
  168. 1680  PRINT
  169. 1690  INPUT " ENTER: Whole degrees......";D
  170. 1700  IF D<>INT(D)THEN LOCATE CSRLIN-1:PRINT ER$;:LOCATE CSRLIN-1:BEEP:GOTO 1690
  171. 1710  INPUT " ENTER: Whole minutes......";M
  172. 1720  IF M<>INT(M)THEN LOCATE CSRLIN-1:PRINT ER$;:LOCATE CSRLIN-1:BEEP:GOTO 1710
  173. 1730  INPUT " ENTER: Seconds............";S
  174. 1740  D1=D+M/60+S/3600
  175. 1750  D$=STR$(D)+"<UNK! {00F8}>"+STR$(M)+"'"+STR$(S)+CHR$(34)
  176. 1760  VIEW PRINT 3 TO 24:CLS:VIEW PRINT:LOCATE 4
  177. 1770  PRINT D$;" =";USING "####.###";D1;:PRINT "<UNK! {00F8}>"
  178. 1780  TOL$=".001<UNK! {00F8}>"
  179. 1790  '
  180. 1800  PRINT
  181. 1810  GOTO 780
  182. 1820  '
  183. 1830  '.....Time
  184. 1840  CLS
  185. 1850  T$="TIMES"
  186. 1860  U$(1)="Seconds................":X(1)=1
  187. 1870  U$(2)="Minutes................":X(2)=1/60
  188. 1880  U$(3)="Hours..................":X(3)=1/3600
  189. 1890  U$(4)="Days...................":X(4)=1/86400
  190. 1900  U$(5)="Weeks..................":X(5)=1/604800
  191. 1910  U$(6)="Years (365.25 day).....":X(6)=1/3.15576E+07
  192. 1920  N=6
  193. 1930  GOTO 460
  194. 1940  '
  195. 1950  '.....Degrees / Radians
  196. 1960  CLS
  197. 1970  T$="DEGREES / RADIANS"
  198. 1980  U$(1)="Degrees................":X(1)=180/PI
  199. 1990  U$(2)="Radians................":X(2)=PI/180
  200. 2000  N=2
  201. 2010  GOTO 460
  202. 2020  '.....print
  203. 2030  LOCATE 5,2
  204. 2040  A=1:B=2:IF Q#<Y# THEN SWAP A,B
  205. 2050  PRINT U$(A);USING "####.####";Q#
  206. 2060  LOCATE 6,2
  207. 2070  PRINT U$(B);USING "####.####";Y#
  208. 2080  TOL$=".0001":GOTO 780
  209. 2090  '
  210. 2100  '.....temperature
  211. 2110  CLS
  212. 2120  T$="TEMPERATURE"
  213. 2130  U$(1)="Degrees Fahrenheit....."
  214. 2140  U$(2)="Degrees Celsius........"
  215. 2150  N=2
  216. 2160  GOTO 460
  217. 2170  '
  218. 2180  '.....print
  219. 2190  IF Z$="1"THEN Y#=(Q#-32)/1.8
  220. 2200  IF Z$="2"THEN Y#=1.8*Q#+32
  221. 2210  LOCATE 5,2
  222. 2220  A=1:B=2:IF Q#<Y# THEN SWAP A,B
  223. 2230  PRINT U$(A);USING "######.#";Q#
  224. 2240  LOCATE 6,2
  225. 2250  PRINT U$(B);USING "######.#";Y#
  226. 2260  PRINT UL$;
  227. 2270  GOTO 800
  228.